package hn.cch.grammar.keyword;

/**
 * Thread线程中的volatile关键字
 */
public class VolatileDemo {


    private static boolean run = true;
    // private volatile static boolean run = true;

    /**
     * volatile关键字主要验证进程全局内存和线程工作内存的存在，
     * 线程改变变量只会改变线程工作内存，不会改变进程全局内存，导致其他线程工作内存不变
     *
     * @param args
     */
    public static void main(String[] args) {
        Thread thread = new Thread(() -> {
            while (run) {
                // System.out.println()使用了synchronized关键字会导致volatile关键字效果不明显
                // System.out.println(run);
            }
        });
        thread.start();

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            System.out.println(e.getMessage());
        }

        // 结束循环
        run = false;
    }

}
